-- jeli istnieje wyzwalacz w bazie danych ...
IF OBJECT_ID('dbo.trg_rekurencyjne_usuwanie') IS NOT NULL
	DROP TRIGGER dbo.trg_rekurencyjne_usuwanie; -- ... to go usuwamy
GO

-- tworzymy wyzwalacz ...
CREATE TRIGGER dbo.trg_rekurencyjne_usuwanie
ON dbo.Pracownicy  -- ... na tabeli Pracownicy ...
FOR DELETE         -- ... na instrukcj DELETE
AS
	IF @@rowcount = 0 RETURN;  -- jesli aden wiersz nie zostanie usunity ...
                            -- ... to koczymy uruchamianie wyzwalacza
  -- w przeciwnym wypadku uruchamiane jest zapytanie, ktre usuwa dane
  -- z tabeli Pracownicy 
	DELETE FROM dbo.Pracownicy
	WHERE pensja > 3000;
GO



ALTER TRIGGER dbo.trg_rekurencyjne_usuwanie
ON dbo.Pracownicy
FOR DELETE
AS
  -- instrukcja sprawdzajca liczb wierszy musi by na samym pocztku
	IF @@rowcount = 0 RETURN;
  -- jeli pensja pracownika zarabiajcego najwicej jest mniejsza rwna ni 3000
  -- ... to wyzwalacz nie bdzie uruchamiany
  IF (SELECT MAX(Pensja) FROM Deleted) <= 3000 RETURN;
  -- w pozostaych przypadkach trigger usunie dane
	DELETE FROM dbo.Pracownicy
	WHERE pensja > 3000;
GO
